Cell segmentation¶

Introduction¶

This is the third script in the processing pipeline for IMC data.

The goal is to generate cell segmentation masks using the Mesmer segmentation deep learning model via the deepcell library. steinbock documentation for deepcell segmentation can be found here.

For cell segmentation, channels corresponding to nuclear and to membrane-specific marker(s) are subset to generate two-channel image stacks that are used as the input to the Mesmer application. After applying segmentation, the quality of the masks is verified visually.
Post-processing parameters can be adjusted to improve the segmentation.

Configuration¶

Import packages¶

In [1]:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pathlib import Path
import pickle
import sys

from cv2 import addWeighted
from deepcell.applications import Mesmer
from matplotlib.colors import ListedColormap
from skimage import color, exposure
from skimage.segmentation import expand_labels, mark_boundaries
from tqdm import tqdm
2023-02-24 23:17:36.442279: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/conda/lib/python3.9/site-packages/cv2/../../lib64:
2023-02-24 23:17:36.442351: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
In [2]:
from steinbock import io
from steinbock.segmentation import deepcell
In [3]:
print(sys.path)
print(sys.executable)
['/home/ubuntu/bbvolume/Git/T1D_preprocessing/processing', '/opt/conda/lib/python39.zip', '/opt/conda/lib/python3.9', '/opt/conda/lib/python3.9/lib-dynload', '', '/opt/conda/lib/python3.9/site-packages']
/opt/conda/bin/python

Load directories and panels¶

Paths to input and output folders as well as antibody panels were exported by the first script (01_Preprocessing.ipynb). Here they are imported again.

In [4]:
with open("./variables/folders.txt", "rb") as handle:
    folders = pickle.loads(handle.read())
folders
Out[4]:
{'raw': PosixPath('/home/ubuntu/Data3/processing/raw'),
 'img': PosixPath('/home/ubuntu/Data3/processing/img'),
 'seg_cells': PosixPath('/home/ubuntu/Data3/processing/seg_cells'),
 'seg_islets': PosixPath('/home/ubuntu/Data3/processing/seg_islets'),
 'masks_cells': PosixPath('/home/ubuntu/Data3/processing/masks_cells'),
 'masks_islets': PosixPath('/home/ubuntu/Data3/processing/masks_islets'),
 'data_cells': PosixPath('/home/ubuntu/Data3/processing/data_cells'),
 'data_islets': PosixPath('/home/ubuntu/Data3/processing/data_islets'),
 'data': PosixPath('/home/ubuntu/Data3/processing'),
 'git': PosixPath('/home/ubuntu/bbvolume/Git/T1D_preprocessing/processing')}
In [5]:
with open("./variables/panels.txt", "rb") as handle:
    panels = pickle.loads(handle.read())

for panel_name, panel in panels.items():
    print(panel_name, "\n", panel.head())
panel_names = list(panels.keys())
Islet 
    channel  metal          name antibody_clone  keep  isletseg  deepcell  \
0        0    Y89       Ghrelin         883622     1       NaN       NaN   
1        1  In113   Histone H3            D1H2     1       NaN       1.0   
2        2  In115        Biotin         1D4-C5     1       NaN       NaN   
6        6  La139  Somatostatin         ICDCLS     1       NaN       NaN   
7        7  Ce140       Insulin        19H4L12     1       NaN       NaN   

   dimred  clustering short_name  
0     1.0         1.0       GHRL  
1     0.0         0.0         H3  
2     1.0         0.0        HBP  
6     1.0         1.0        SST  
7     1.0         1.0        INS  
Immune 
    channel  metal          name antibody_clone  keep  isletseg  deepcell  \
0        0    Y89           MPO            pAb     1       NaN       NaN   
1        1  In113   Histone H3            D1H2     1       NaN       1.0   
2        2  In115           SMA            1A4     1       NaN       NaN   
6        6  La139  Somatostatin         ICDCLS     1       NaN       NaN   
7        7  Ce140       Insulin        19H4L12     1       NaN       NaN   

   dimred  clustering short_name  
0       1           1        MPO  
1       0           0         H3  
2       1           1        SMA  
6       1           1        SST  
7       1           1        INS  

Prepare cell segmentation¶

Generate segmentation stacks¶

Segmentation stacks are generated by aggregating the channels selcted in panel.csv in the column deepcell.

Cell segmentation requires to construct as 2-channel images with the following structure:

  • Channel 1 = nuclear channels.
  • Channel 2 = cytoplasmic/membranous channels.

For channel-wise normalization, zscore and min-max methods are available.
In addition, different functions can be used to aggregate channels. Default: np.mean, for other options, see https://numpy.org/doc/stable/reference/routines.statistics.html#averages-and-variances.

In [6]:
# Define image preprocessing options
channelwise_zscore = False
channelwise_minmax = True
aggr_func = np.sum
In [7]:
for panel_name, panel in panels.items():
    print("Processing", panel_name, "panel")
    # Define channels to use for segmentation ("islet_seg" column in panel(s))
    channel_groups = panel["deepcell"].values
    channel_groups = np.where(channel_groups == 0, np.nan, channel_groups)
    
    # Define input/output folders
    img_subdir = folders["img"] / panel_name
    seg_subdir = folders["seg_cells"] / panel_name
    seg_subdir.mkdir(exist_ok=True)

    # Create and save segmentation stacks
    for img_path in io.list_image_files(img_subdir):
        segstack = deepcell.create_segmentation_stack(
            img = io.read_image(img_path),
            channelwise_minmax = channelwise_minmax,
            channelwise_zscore = channelwise_zscore,
            channel_groups = channel_groups,
            aggr_func = aggr_func
        )
        segstack_file = seg_subdir / f"{img_path.name}"
        io.write_image(segstack, segstack_file)
Processing Islet panel
Processing Immune panel

Check segmentation stacks¶

Subset nuclear and cytoplasmic/membraneous channels are shown side-by-side

Parameters¶

In [8]:
# Number of images per panel to show
nb_images_to_show = 5

# Adjust image max intensity if needed (lower value = higher intensity)
max_intensity_nuc = 0.75
max_intensity_mem = 0.5

Display nuclear and membranous channels¶

In [9]:
# Randomly select images
segstacks_dir0 = folders["seg_cells"] / panel_names[0]
segstacks = sorted(segstacks_dir0.glob("*.tiff"))
rng = np.random.default_rng()
indexes = rng.choice(len(segstacks), nb_images_to_show, replace=False)

# Plot
fig, axs = plt.subplots(nb_images_to_show, 4,
                        figsize=(16, 4*nb_images_to_show))

for i,idx in enumerate(indexes):
    for j, (panel_name, panel) in enumerate(panels.items()):
        
        ## load images and masks
        seg_subdir = folders["seg_cells"] / panel_name
        img_name = segstacks[idx].name.replace(panel_names[0], panel_name)
        img = io.read_image(seg_subdir / img_name)
        
        ## plot images
        axs[i,j].imshow(img[0,:,:], vmin=0, vmax=max_intensity_nuc)
        axs[i,j].set_title(img_name + ": nuclei")
        axs[i,j].axis('off')

        axs[i,j+2].imshow(img[1,:,:], vmin=0, vmax=max_intensity_mem)
        axs[i,j+2].set_title(img_name + ": membrane")
        axs[i,j+2].axis('off')

Segment cells¶

Settings¶

segmentation_type should be one either whole-cell or nuclear.

The image resolution should also be specified (microns per pixel).

Several post-processing arguments can be passed to the deepcell application. Defaults for nuclear and whole-cell segmentation are indicated in brackets.

  • maxima_threshold: set lower if cells are missing (default for nuclear segmentation=0.1, default for nuclear segmentation=0.075).
  • maxima_smooth: (default=0).
  • interior_threshold: set higher if you your nuclei are too large (default=0.2).
  • interior_smooth: larger values give rounder cells (default=2).
  • small_objects_threshold: depends on the image resolution (default=50).
  • fill_holes_threshold: (default=10).
  • radius: (default=2).

Cell labels can also be expanded by defining an expansion_distance (mostly useful for nuclear segmentation).

In [10]:
# Segmentation type
segmentation_type = "whole-cell" # "nuclear"

# Post-processing arguments for whole-cell segmentation
kwargs_whole_cell =  {
    'maxima_threshold': 0.075,
    'maxima_smooth': 0,
    'interior_threshold': 0.2,
    'interior_smooth': 2,
    'small_objects_threshold': 25,
    'fill_holes_threshold': 15,
    'radius': 2
}

# Post-processing arguments for nuclear segmentation
kwargs_nuclear =  {
    'maxima_threshold': 0.1,
    'maxima_smooth': 0,
    'interior_threshold': 0.2,
    'interior_smooth': 2,
    'small_objects_threshold': 15,
    'fill_holes_threshold': 15,
    'radius': 2
}

# Mask pixel expansion (0 = no expansion)
expansion_distance = 0

# Image resolution (microns per pixels)
image_mpp = 1

Predict cell masks¶

In [11]:
app = Mesmer()
2023-02-25 00:57:13.770955: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/conda/lib/python3.9/site-packages/cv2/../../lib64:
2023-02-25 00:57:13.771320: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)
2023-02-25 00:57:13.771468: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (0b7302342a6c): /proc/driver/nvidia/version does not exist
2023-02-25 00:57:13.800887: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
WARNING:tensorflow:No training configuration found in save file, so the model was *not* compiled. Compile it manually.
In [ ]:
for panel_name, panel in panels.items():
    
    # Input/output
    print("Processing", panel_name, "panel")
    seg_subdir = folders["seg_cells"] / panel_name
    masks_dir = folders["masks_cells"] / panel_name
    masks_dir.mkdir(exist_ok = True)
    masks_subdir = masks_dir / segmentation_type
    masks_subdir.mkdir(exist_ok = True)
    segstacks = io.list_image_files(seg_subdir)
    
    for stack in tqdm(segstacks):
        
        # Load images
        img = io.read_image(stack)
        img = np.moveaxis(img, 0, 2)
        img = np.expand_dims(img.data, 0)

        # Predict masks
        mask = app.predict(
            img, image_mpp = image_mpp, compartment = segmentation_type,
            postprocess_kwargs_whole_cell = kwargs_whole_cell,
            postprocess_kwargs_nuclear = kwargs_nuclear
        )
        mask = mask.squeeze()
        mask = expand_labels(mask, distance = float(expansion_distance))

        # Save masks
        mask_file = masks_subdir / stack.name
        io.write_mask(mask, mask_file)
Processing Islet panel
  0%|                                                                                                                                            | 0/7650 [00:00<?, ?it/s]2023-02-25 00:57:29.486000: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 67108864 exceeds 10% of free system memory.
2023-02-25 00:57:29.497481: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 67108864 exceeds 10% of free system memory.
2023-02-25 00:57:29.504807: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 67108864 exceeds 10% of free system memory.
2023-02-25 00:57:29.527365: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 67108864 exceeds 10% of free system memory.
2023-02-25 00:57:29.573272: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 134217728 exceeds 10% of free system memory.
/opt/conda/lib/python3.9/site-packages/deepcell_toolbox/deep_watershed.py:179: FutureWarning: `selem` is a deprecated argument name for `h_maxima`. It will be removed in version 1.0. Please use `footprint` instead.
  markers = h_maxima(image=maxima,
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7650/7650 [5:28:52<00:00,  2.58s/it]
Processing Immune panel
 58%|████████████████████████████████████████████████████████████████████████▉                                                    | 4467/7650 [4:48:20<3:53:02,  4.39s/it]

Check cell segmentation¶

The nuclear channel, cell mask and overlays images and labels are shown side-by-side. Full size images are shown on odd rows and zoom-ins are shown on even rows.

Adjust the image intensity and overlaid mask transparency by adjusting the corresponding variables.
For higher magnification images, adjust the coordinates and dimension if needed.
Overlays can be saved (in subfolders of the mask_cells directory).

In [16]:
# Number of images to show (per panel)
nb_images_to_show = 5

# adjust image max intensity if needed (lower value = higher intensity)
max_intensity = 0.75
overlay_alpha = 0.25

# Color palette for masks
cmap = ListedColormap(np.random.rand(10**3,3))
cmap.colors[0] = [1,1,1]
        
# Should overlay images be saved?
save_overlay = False
In [17]:
total_images = nb_images_to_show * len(panels.keys())
fig, ax = plt.subplots(2*total_images, 3,
                       figsize=(12, 8*total_images))

for i, panel_name in enumerate(panel_names):
    # List masks and images
    masks_subdir = folders["masks_cells"] / panel_name / segmentation_type
    seg_subdir = folders["seg_cells"] / panel_name
    masks = io.list_mask_files(masks_subdir)

    for j in range(nb_images_to_show):
        k = 2 * (j + (i * nb_images_to_show))
        
        # Load random images and masks, create an overlay
        rng = np.random.default_rng()
        ix = rng.choice(len(masks))
        cur_filename = masks[ix].name

        img = io.read_image(seg_subdir / cur_filename)
        cur_img = (img / np.amax(img))[0,...]
        mask = io.read_image(masks_subdir / cur_filename)
        cur_mask = mask[0,...].astype('uint16')
        # print(cur_img.shape, cur_mask.shape)
        
        # Overlay image and cell labels
        cur_img = exposure.adjust_sigmoid(cur_img, 0.1)
        cur_img = color.gray2rgb(cur_img)[...,0]
        overlay1 = color.label2rgb(cur_mask, cur_img,
                                   alpha = overlay_alpha, bg_label=0)
        
        # Overlay image and mask borders
        borders = mark_boundaries(cur_img, cur_mask, mode = "thin")[...,0]
        overlay2 = addWeighted(cur_img*255, 1, borders*65535, 1, 0)
        

        # Display images and masks
        ax[k,0].imshow(img[0,:,:], vmax = max_intensity)
        ax[k,0].set_title(cur_filename)
        
        ax[k,1].imshow(overlay1, cmap = cmap)
        ax[k,1].set_title("Overlay")
        ax[k,1].axis('off')
        
        ax[k,2].imshow(overlay2)
        ax[k,2].set_title("Borders")
        ax[k,2].axis('off')

        # Higher magnification (change coordinates and dimensions if needed)
        xstart = 100
        ystart = 100
        dim = 100

        ax[k+1,0].imshow(img[0,:,:], vmin = 0, vmax = max_intensity)
        ax[k+1,0].set_xlim([xstart, xstart + dim])
        ax[k+1,0].set_ylim([ystart, ystart + dim])

        ax[k+1,1].imshow(overlay1, cmap = cmap)
        ax[k+1,1].set_xlim([xstart, xstart + dim])
        ax[k+1,1].set_ylim([ystart, ystart + dim])
        ax[k+1,1].axis('off')

        ax[k+1,2].imshow(overlay2)
        ax[k+1,2].set_xlim([xstart, xstart + dim])
        ax[k+1,2].set_ylim([ystart, ystart + dim])
        ax[k+1,2].axis('off')
        
        # Save the overlay
        if save_overlay:
            overlay_dir = folders["masks_cells"] / panel_name / "overlay"
            overlay_dir.mkdir(exist_ok = True)
            overlay_file = overlay_dir / masks[ix].name
            io.write_image(np.moveaxis(overlay1, -1, 0), overlay_file)

Next step¶

The next step in this pipeline is measurement of cell and islet intensities, which is performed with the 04_Measurements.ipynb notebook.

In [18]:
!conda list
# packages in environment at /opt/conda:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
absl-py                   1.3.0                    pypi_0    pypi
albumentations            1.3.0                    pypi_0    pypi
anndata                   0.8.0                    pypi_0    pypi
anyio                     3.5.0            py39h06a4308_0  
argon2-cffi               21.3.0             pyhd3eb1b0_0  
argon2-cffi-bindings      21.2.0           py39h7f8727e_0  
asttokens                 2.0.5              pyhd3eb1b0_0  
astunparse                1.6.3                    pypi_0    pypi
attrs                     22.1.0           py39h06a4308_0  
babel                     2.9.1              pyhd3eb1b0_0  
backcall                  0.2.0              pyhd3eb1b0_0  
beautifulsoup4            4.11.1           py39h06a4308_0  
blas                      1.0                         mkl  
bleach                    4.1.0              pyhd3eb1b0_0  
brotlipy                  0.7.0           py39h27cfd23_1003  
bzip2                     1.0.8                h7b6447c_0  
ca-certificates           2022.10.11           h06a4308_0  
cachetools                5.2.0                    pypi_0    pypi
certifi                   2022.9.24        py39h06a4308_0  
cffi                      1.15.0           py39hd667e15_1  
charset-normalizer        2.0.4              pyhd3eb1b0_0  
click                     8.1.3                    pypi_0    pypi
click-log                 0.4.0                    pypi_0    pypi
colorama                  0.4.4              pyhd3eb1b0_0  
conda                     22.11.1          py39h06a4308_4  
conda-content-trust       0.1.1              pyhd3eb1b0_0  
conda-package-handling    1.8.1            py39h7f8727e_0  
contourpy                 1.0.6                    pypi_0    pypi
cpuonly                   2.0                           0    pytorch
cryptography              36.0.0           py39h9ce1e76_0  
cycler                    0.11.0                   pypi_0    pypi
cython                    0.29.32                  pypi_0    pypi
debugpy                   1.5.1            py39h295c915_0  
decorator                 5.1.1              pyhd3eb1b0_0  
deepcell                  0.12.0                   pypi_0    pypi
deepcell-toolbox          0.11.2                   pypi_0    pypi
deepcell-tracking         0.6.3                    pypi_0    pypi
defusedxml                0.7.1              pyhd3eb1b0_0  
efficientnet-pytorch      0.7.1                    pypi_0    pypi
entrypoints               0.4              py39h06a4308_0  
executing                 0.8.3              pyhd3eb1b0_0  
fcswrite                  0.6.1                    pypi_0    pypi
ffmpeg                    4.3                  hf484d3e_0    pytorch
flatbuffers               22.12.6                  pypi_0    pypi
flit-core                 3.6.0              pyhd3eb1b0_0  
fonttools                 4.38.0                   pypi_0    pypi
freetype                  2.11.0               h70c0345_0  
gast                      0.5.3                    pypi_0    pypi
giflib                    5.2.1                h7b6447c_0  
gmp                       6.2.1                h295c915_3  
gnutls                    3.6.15               he1e5248_0  
google-auth               2.15.0                   pypi_0    pypi
google-auth-oauthlib      0.4.6                    pypi_0    pypi
google-pasta              0.2.0                    pypi_0    pypi
grpcio                    1.51.1                   pypi_0    pypi
h5py                      3.6.0                    pypi_0    pypi
icu                       58.2                 he6710b0_3  
idna                      3.3                pyhd3eb1b0_0  
imageio                   2.21.3                   pypi_0    pypi
importlib-metadata        5.2.0                    pypi_0    pypi
intel-openmp              2021.4.0          h06a4308_3561  
ipykernel                 6.15.2           py39h06a4308_0  
ipython                   8.7.0            py39h06a4308_0  
ipython_genutils          0.2.0              pyhd3eb1b0_1  
jedi                      0.18.1           py39h06a4308_1  
jinja2                    3.1.2            py39h06a4308_0  
joblib                    1.2.0                    pypi_0    pypi
jpeg                      9e                   h7f8727e_0  
json5                     0.9.6              pyhd3eb1b0_0  
jsonschema                4.16.0           py39h06a4308_0  
jupyter_client            7.4.7            py39h06a4308_0  
jupyter_core              4.11.2           py39h06a4308_0  
jupyter_server            1.18.1           py39h06a4308_0  
jupyterlab                3.5.0            py39h06a4308_0  
jupyterlab_pygments       0.1.2                      py_0  
jupyterlab_server         2.16.3           py39h06a4308_0  
keras                     2.8.0                    pypi_0    pypi
keras-preprocessing       1.1.2                    pypi_0    pypi
kiwisolver                1.4.4                    pypi_0    pypi
lame                      3.100                h7b6447c_0  
lcms2                     2.12                 h3be6417_0  
ld_impl_linux-64          2.35.1               h7274673_9  
lerc                      3.0                  h295c915_0  
libclang                  14.0.6                   pypi_0    pypi
libdeflate                1.8                  h7f8727e_5  
libffi                    3.3                  he6710b0_2  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libiconv                  1.16                 h7f8727e_2  
libidn2                   2.3.2                h7f8727e_0  
libpng                    1.6.37               hbc83047_0  
libsodium                 1.0.18               h7b6447c_0  
libstdcxx-ng              11.2.0               h1234567_1  
libtasn1                  4.16.0               h27cfd23_0  
libtiff                   4.4.0                hecacb30_0  
libunistring              0.9.10               h27cfd23_0  
libwebp                   1.2.4                h11a3e52_0  
libwebp-base              1.2.4                h5eee18b_0  
libxml2                   2.9.14               h74e7548_0  
libxslt                   1.1.35               h4e12654_0  
lxml                      4.9.2                    pypi_0    pypi
lz4-c                     1.9.4                h6a678d5_0  
markdown                  3.4.1                    pypi_0    pypi
markupsafe                2.1.1            py39h7f8727e_0  
matplotlib                3.6.2                    pypi_0    pypi
matplotlib-inline         0.1.6            py39h06a4308_0  
mistune                   0.8.4           py39h27cfd23_1000  
mkl                       2021.4.0           h06a4308_640  
mkl-service               2.4.0            py39h7f8727e_0  
mkl_fft                   1.3.1            py39hd3c417c_0  
mkl_random                1.2.2            py39h51133e4_0  
munch                     2.5.0                    pypi_0    pypi
natsort                   8.2.0                    pypi_0    pypi
nbclassic                 0.4.8            py39h06a4308_0  
nbclient                  0.5.13           py39h06a4308_0  
nbconvert                 6.5.4            py39h06a4308_0  
nbformat                  5.7.0            py39h06a4308_0  
ncurses                   6.3                  h7f8727e_2  
nest-asyncio              1.5.5            py39h06a4308_0  
nettle                    3.7.3                hbbd107a_1  
networkx                  2.8.6                    pypi_0    pypi
notebook                  6.5.2            py39h06a4308_0  
notebook-shim             0.2.2            py39h06a4308_0  
numpy                     1.23.3                   pypi_0    pypi
numpy-base                1.23.4           py39h31eccc5_0  
oauthlib                  3.2.2                    pypi_0    pypi
opencv-contrib-python     4.6.0.66                 pypi_0    pypi
opencv-python-headless    4.6.0.66                 pypi_0    pypi
openh264                  2.1.1                h4ff587b_0  
openssl                   1.1.1s               h7f8727e_0  
opt-einsum                3.3.0                    pypi_0    pypi
packaging                 22.0                     pypi_0    pypi
pandas                    1.4.4                    pypi_0    pypi
pandocfilters             1.5.0              pyhd3eb1b0_0  
parso                     0.8.3              pyhd3eb1b0_0  
pexpect                   4.8.0              pyhd3eb1b0_3  
pickleshare               0.7.5           pyhd3eb1b0_1003  
pillow                    9.3.0                    pypi_0    pypi
pip                       21.2.4           py39h06a4308_0  
pluggy                    1.0.0            py39h06a4308_1  
pretrainedmodels          0.7.4                    pypi_0    pypi
prometheus_client         0.14.1           py39h06a4308_0  
prompt-toolkit            3.0.20             pyhd3eb1b0_0  
protobuf                  3.20.3                   pypi_0    pypi
psutil                    5.9.0            py39h5eee18b_0  
ptyprocess                0.7.0              pyhd3eb1b0_2  
pure_eval                 0.2.2              pyhd3eb1b0_0  
pyasn1                    0.4.8                    pypi_0    pypi
pyasn1-modules            0.2.8                    pypi_0    pypi
pycosat                   0.6.3            py39h27cfd23_0  
pycparser                 2.21               pyhd3eb1b0_0  
pydot                     1.4.2                    pypi_0    pypi
pygments                  2.11.2             pyhd3eb1b0_0  
pyopenssl                 22.0.0             pyhd3eb1b0_0  
pyparsing                 3.0.9            py39h06a4308_0  
pyrsistent                0.18.0           py39heee7806_0  
pysocks                   1.7.1            py39h06a4308_0  
python                    3.9.12               h12debd9_0  
python-dateutil           2.8.2              pyhd3eb1b0_0  
python-fastjsonschema     2.16.2           py39h06a4308_0  
pytorch                   1.13.1              py3.9_cpu_0    pytorch
pytorch-mutex             1.0                         cpu    pytorch
pytz                      2022.7                   pypi_0    pypi
pywavelets                1.4.1                    pypi_0    pypi
pyyaml                    6.0                      pypi_0    pypi
pyzmq                     23.2.0           py39h6a678d5_0  
qudida                    0.0.4                    pypi_0    pypi
readimc                   0.6.1                    pypi_0    pypi
readline                  8.1.2                h7f8727e_1  
requests                  2.27.1             pyhd3eb1b0_0  
requests-oauthlib         1.3.1                    pypi_0    pypi
rsa                       4.9                      pypi_0    pypi
ruamel.yaml               0.17.21          py39h5eee18b_0  
ruamel.yaml.clib          0.2.6            py39h5eee18b_1  
ruamel_yaml               0.15.100         py39h27cfd23_0  
scikit-image              0.19.3                   pypi_0    pypi
scikit-learn              1.2.0                    pypi_0    pypi
scipy                     1.9.1                    pypi_0    pypi
segmentation-models-pytorch 0.3.1                    pypi_0    pypi
send2trash                1.8.0              pyhd3eb1b0_1  
setuptools                61.2.0           py39h06a4308_0  
six                       1.16.0             pyhd3eb1b0_1  
sniffio                   1.2.0            py39h06a4308_1  
soupsieve                 2.3.2.post1      py39h06a4308_0  
spektral                  1.0.6                    pypi_0    pypi
sqlite                    3.38.2               hc218d9a_0  
stack_data                0.2.0              pyhd3eb1b0_0  
steinbock                 0.15.0                   pypi_0    pypi
tensorboard               2.8.0                    pypi_0    pypi
tensorboard-data-server   0.6.1                    pypi_0    pypi
tensorboard-plugin-wit    1.8.1                    pypi_0    pypi
tensorflow                2.8.0                    pypi_0    pypi
tensorflow-addons         0.16.1                   pypi_0    pypi
tensorflow-io-gcs-filesystem 0.29.0                   pypi_0    pypi
termcolor                 2.1.1                    pypi_0    pypi
terminado                 0.13.1           py39h06a4308_0  
tf-estimator-nightly      2.8.0.dev2021122109          pypi_0    pypi
threadpoolctl             3.1.0                    pypi_0    pypi
tifffile                  2022.8.12                pypi_0    pypi
timm                      0.4.12                   pypi_0    pypi
tinycss2                  1.2.1            py39h06a4308_0  
tk                        8.6.11               h1ccaba5_0  
tomli                     2.0.1            py39h06a4308_0  
toolz                     0.12.0           py39h06a4308_0  
torchaudio                0.13.1                 py39_cpu    pytorch
torchvision               0.14.1                 py39_cpu    pytorch
tornado                   6.2              py39h5eee18b_0  
tqdm                      4.63.0             pyhd3eb1b0_0  
traitlets                 5.7.1            py39h06a4308_0  
typeguard                 2.13.3                   pypi_0    pypi
typing-extensions         4.4.0            py39h06a4308_0  
typing_extensions         4.4.0            py39h06a4308_0  
tzdata                    2022a                hda174b7_0  
urllib3                   1.26.8             pyhd3eb1b0_0  
wcwidth                   0.2.5              pyhd3eb1b0_0  
webencodings              0.5.1            py39h06a4308_1  
websocket-client          0.58.0           py39h06a4308_4  
werkzeug                  2.2.2                    pypi_0    pypi
wheel                     0.37.1             pyhd3eb1b0_0  
wrapt                     1.14.1                   pypi_0    pypi
xtiff                     0.7.8                    pypi_0    pypi
xz                        5.2.5                h7b6447c_0  
yaml                      0.2.5                h7b6447c_0  
zeromq                    4.3.4                h2531618_0  
zipp                      3.11.0                   pypi_0    pypi
zlib                      1.2.12               h7f8727e_1  
zstd                      1.5.2                ha4553b6_0